#ifndef SJF_SCHEDULER
#define SJF_SCHEDULER

#include "Scheduler.h"

class SJF_Scheduler : public Abstract_CPUScheduler
{

	public:
		SJF_Scheduler();
		~SJF_Scheduler();
		void sortProcesses();
		void runScheduler();

	protected:
		bool compareArrivalTime(vector<Process>::iterator positionOne, vector<Process>::iterator positionTwo);
		bool compareCPU_Burst(vector<Process>::iterator positionOne, vector<Process>::iterator positionTwo);
		void getQueuedProcesses(vector<Process> &available_queue, vector<Process>::iterator &processListItr, int prevProcEndTime);
		void assignValuesToProcessList(Process temp);
		void findProcessID(vector<Process>::iterator &location, int processID);
		void sortQueueByTime(vector<Process> &queue);
};

#endif
